package thread;

/**
 *创建线程任务对象，其类型为Runnable类型，
 * 然后创建Thread对象，将Runnable类型的任务对象交给Thread对象.
 */
class ThreadTask1 implements Runnable {
    @Override
    public void run() {
        String tName = Thread.currentThread().getName();
        while (true){
            System.out.println(tName + "->Task01");
        }

    }
}
class ThreadTask2 implements Runnable {
    @Override
    public void run() {
        String tName = Thread.currentThread().getName();
        while (true){
            System.out.println(tName + "->Task02");
        }
    }
}
public class ThreadDemo02 {
    /**
     * main方法会运行在主线程中，这个线程不是我们启动的线程，而是由JVM启动的线程。
     * @param args
     */
    public static void main(String[] args) {
        //获取main方法运行在哪个线程，这个线程名字是什么
        System.out.println(Thread.currentThread().getName());
        //创建两个新的线程对象
        ThreadTask1 task1 = new ThreadTask1();
        ThreadTask2 task2 = new ThreadTask2();
        //创建两个新的线程对象，并将任务交给线程对象
        Thread t1 = new Thread(task1);
        Thread t2 = new Thread(task2);
        //启动线程对象
        t1.start(); //线程启动后获取了CPU会执行自己的run方法
        t2.start();
        //要求：参考34行代码，用lambda表达式方式实现线程对象创建
        Thread t3 = new Thread(new Runnable() {
            public void run() {
                String tName = Thread.currentThread().getName();
                while (true){
                    System.out.println( tName + "->task03");
                }
            }
        });
        t3.start();
        //要求：参考34行代码，用lambda表达式方式实现线程对象创建
        Thread t4 = new Thread(()->{
            String tName = Thread.currentThread().getName();
            while (true){
                System.out.println( tName + "->task04");
            }
        });
        t4.start();
    }
}
